mongoose 建立数据库连接

创建时间:2016/8/17 12:06
来源:http://geekblog.zhaoyan.me/mongoose-%e5%bb%ba%e7%ab%8b%e6%95%b0%e6%8d%ae%e5%ba%93%e8%bf%9e%e6%8e%a5/


in Node.js

mongoose 建立数据库连接

mongooose is a mongodb object modeling for node.js
mongoose有两个连接数据库的方式(官方介绍):

  • monggose.connect
  • createConnection
  • 最简单的建立

    var dbURL = 'mongodb://localhost/mydatabase';
    mongoose.connect(dbURL);
    

    一般来说,推荐在程序开始的时候,就建立建立,只有停止程序或者程序出现问题被迫中止的时候,才关掉或者重启连接

    建立多个数据库连接

    当然如果你只有一个数据库,用同样的用户权限登录,上面那个最简单的建立方式,是非常适合使用的。但是在很多时候,你会有多个数据或者不同的权限的账户连接。这个时候,你就需要建立多个数据库连接。

    var dbURL = 'mogodb://localhost/myadminDatabase';
    var adminConnection= mongoose.createConnection(dbURL);
    

    关于connection string

    之前提到了connection string – dbURL,其实connection string有很多不同的配置,这里简单的做一个介绍
    – Port

    var dbURL = 'mongodb://localhost:27018/mydatabase';
    

    – User

    var dbURL = 'mongodb://username:password@localhost/mydatabse';
    

    或者你也可以

    var dbURL = 'mogodb://localhost/myadminDatabase';
    var dbOptions = {'user':'db_user','pass':'db_password'};
    mongoose.connect(dbURL,dbOptions);
    

    如何关闭数据库连接

    mogoose.connection.close(function(){
     console.log('connection closed');
    });
    
    adminConnection.close(function(){
     console.log('connection closed');
    });
    

    当程序停止之后自动关闭连接

    process.on('SIGINT', function() {
    mongoose.connection.close(function () {
                 console.log('Mongoose disconnected through app termination');
                 process.exit(0);   });
    });
    

    如何catch error

      mongoose.connection.on('error',function (err) {
                console.log('Mongoose connection error: ' + err);
    });
    

    在我们知道了如何大家连接,如何关闭连接,如何catch error,我们这里把之前的东西综合起来,看如何在一个新project中更好的建立mongoose的结构
    首先,建立一个/model/db.js文件,加入下面代码

    var mongoose = require( 'mongoose' );
    // Build the connection string
    var dbURI = 'mongodb://localhost/MongoosePM';
    // Create the database connection
    mongoose.connect(dbURI);
    
    mongoose.connection.on('connected', function () {
         console.log('Mongoose connected to ' + dbURI);
    });
    mongoose.connection.on('error',function (err) {
          console.log('Mongoose connection error: ' + err);
    });
    mongoose.connection.on('disconnected', function () {
          console.log('Mongoose disconnected');
    });
    process.on('SIGINT', function() {
          mongoose.connection.close(function () {
              console.log('Mongoose disconnected through app termination');
              process.exit(0);   
           });
    });
    

    在project start的时候打开连接,在app.js 或者server.js当中加入

    db = require('./model/db')